Traditional search engines are not well suited to tackle difficult search problems. To solve a difficult search problem, a user may have to issue many queries and look at many pages in the result set of each query before finding a suitable result. But the user does not know how many pages he may have to look at in each result set. Therefore the user cannot inspect the result sets one at a time. After looking at, say, 3 pages in each result set, the user may have to go back and look at a further 3 pages in each of the same result sets. In other words, the user may have to interleave the browsing of the result sets or, so to speak, browse the result sets simultaneously. This is difficult to do in traditional search engine; to go back to an earlier result set, the user has to retype the query that produced the result set, or use the back button of the browser to backtrack through intervening pages of other result sets, documents visited by following links embedded in result sets, and, possibly, unrelated documents.